file system: Add an api to get a GIcon
authorMatthias Clasen <mclasen@redhat.com>
Fri, 4 Sep 2015 06:08:59 +0000 (02:08 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 4 Sep 2015 06:08:59 +0000 (02:08 -0400)
Using prerendered surfaces is not working well when it comes
to state changes, so make the GIcon available.

gtk/gtkfilesystem.c
gtk/gtkfilesystem.h

index 17213e15c71ead807175c5daaebe9205f8189838..421166325f609409baa45e852ed136ec89228bf6 100644 (file)
@@ -770,29 +770,32 @@ _gtk_file_system_volume_render_icon (GtkFileSystemVolume  *volume,
   return surface;
 }
 
+GIcon *
+_gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume)
+{
+  if (IS_ROOT_VOLUME (volume))
+    return g_themed_icon_new ("drive-harddisk-symbolic");
+  else if (G_IS_DRIVE (volume))
+    return g_drive_get_symbolic_icon (G_DRIVE (volume));
+  else if (G_IS_VOLUME (volume))
+    return g_volume_get_symbolic_icon (G_VOLUME (volume));
+  else if (G_IS_MOUNT (volume))
+    return g_mount_get_symbolic_icon (G_MOUNT (volume));
+  else
+    return NULL;
+}
+
 cairo_surface_t *
 _gtk_file_system_volume_render_symbolic_icon (GtkFileSystemVolume  *volume,
                                              GtkWidget            *widget,
                                              gint                  icon_size,
                                              GError              **error)
 {
-  GIcon *icon = NULL;
+  GIcon *icon;
   cairo_surface_t *surface;
 
-  if (IS_ROOT_VOLUME (volume))
-    icon = g_themed_icon_new ("drive-harddisk-symbolic");
-  else if (G_IS_DRIVE (volume))
-    icon = g_drive_get_symbolic_icon (G_DRIVE (volume));
-  else if (G_IS_VOLUME (volume))
-    icon = g_volume_get_symbolic_icon (G_VOLUME (volume));
-  else if (G_IS_MOUNT (volume))
-    icon = g_mount_get_symbolic_icon (G_MOUNT (volume));
-
-  if (!icon)
-    return NULL;
-
+  icon = _gtk_file_system_volume_get_symbolic_icon (volume);
   surface = get_surface_from_gicon (icon, widget, icon_size, error);
-
   g_object_unref (icon);
 
   return surface;
index 70bd3eaaf1a1dab40e3ec2bfce1efb3db2792f0e..be198850a2caea13abbd31fc5e53a56c6b55dba5 100644 (file)
@@ -93,6 +93,7 @@ GtkFileSystemVolume * _gtk_file_system_get_volume_for_file (GtkFileSystem
 gchar *               _gtk_file_system_volume_get_display_name (GtkFileSystemVolume *volume);
 gboolean              _gtk_file_system_volume_is_mounted       (GtkFileSystemVolume *volume);
 GFile *               _gtk_file_system_volume_get_root         (GtkFileSystemVolume *volume);
+GIcon *               _gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume);
 cairo_surface_t *     _gtk_file_system_volume_render_icon      (GtkFileSystemVolume  *volume,
                                                                GtkWidget            *widget,
                                                                gint                  icon_size,